package com.ybear.ybhotrepairdemo;

import android.app.Application;
import android.util.Log;

import com.ybear.ybhotrepair.core.HotRepairManage;
import com.ybear.ybhotrepair.utils.LogUtil;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        LogUtil.setDebugEnable(this, true);

//        //类热修复
//        ClassHotRepair clsHR = new ClassHotRepair( this );
//        //预设的dex目录：/data/data/包名/files/odex/
//        String defDexDir = clsHR.getLocalDexPatchDirFile().getAbsolutePath();
//        //导入测试Dex文件
//        testWriteDexFile(this, defDexDir);

        long startTime = System.currentTimeMillis();

        HotRepairManage.getInstance()
                .init( this )
                .setSimpleReq("http://192.168.1.29:8080/YBHotRepairServerDemo/")
                .startRepair("demo_token_1");

        Log.e("TAG", "ENDTime:" + (System.currentTimeMillis() - startTime));
//        //加载当前dex目录下的所有dex文件
//        boolean result = clsHR.loadRepairDexFileDir();
//        LogUtil.d("默认路径：" + defDexDir);
//        LogUtil.d("修复结果：" + result);
    }

//    /**
//     * 导入测试的dex文件 - 仅用于测试
//     * @param context       上下文
//     * @param defDexDir     默认的dex目录
//     */
//    public void testWriteDexFile(Context context, String defDexDir) {
//        FileOutputStream fosDex;
//        FileInputStream fisDex;
//        try {
//            /* 假装dex文件存在这里，复制这里的文件到demo预设目录下。测试文件在项目的 testDexFile 文件夹下
//             * /storage/emulated/0/Android/obb/包名/cls_main.dex
//             * /storage/emulated/0/Android/obb/包名/cls_test.dex*/
//            File[] fDexAll = context.getObbDir().listFiles();
//            if( fDexAll == null ) return;
//            for (File f : fDexAll) {
//                String name = f.getName();
//                fisDex = new FileInputStream( f );
//                byte[] buffDex = new byte[ fisDex.available() ];
//                if( fisDex.read( buffDex ) == buffDex.length ) {
//
//                    fosDex = new FileOutputStream( new File(defDexDir, name) );
//                    fosDex.write( buffDex );
//                    LogUtil.d(String.format("测试%s文件导入成功！大小：%s", name, buffDex.length));
//                }else {
//                    LogUtil.d(String.format("测试%s文件导入失败！", name));
//                }
//            }
//
//        } catch (IOException e) {
//            e.printStackTrace();
//            LogUtil.d("测试Dex文件导入失败！");
//        }
//    }
}
